package com.skzh.media.service.impl;

import java.util.List;
        import com.skzh.common.utils.DateUtils;
import com.skzh.common.utils.file.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.skzh.media.mapper.TaskMediaMapper;
import com.skzh.media.domain.TaskMedia;
import com.skzh.media.service.ITaskMediaService;

/**
 * 任务媒体文件Service业务层处理
 *
 * @author skzh
 * @date 2025-04-10
 */
@Service
public class TaskMediaServiceImpl implements ITaskMediaService {
    @Autowired
    private TaskMediaMapper taskMediaMapper;

    /**
     * 查询任务媒体文件
     *
     * @param tmId 任务媒体文件主键
     * @return 任务媒体文件
     */
    @Override
    public TaskMedia selectTaskMediaByTmId(Long taskId) {
        return taskMediaMapper.selectTaskMediaByTmId(taskId);
    }

    /**
     * 查询任务媒体文件列表
     *
     * @param taskMedia 任务媒体文件
     * @return 任务媒体文件
     */
    @Override
    public List<TaskMedia> selectTaskMediaList(TaskMedia taskMedia) {
        return taskMediaMapper.selectTaskMediaList(taskMedia);
    }

    /**
     * 新增任务媒体文件
     *
     * @param taskMedia 任务媒体文件
     * @return 结果
     */
    @Override
    public int insertTaskMedia(TaskMedia taskMedia) {
                taskMedia.setCreateTime(DateUtils.getNowDate());
            return taskMediaMapper.insertTaskMedia(taskMedia);
    }

    /**
     * 修改任务媒体文件
     *
     * @param taskMedia 任务媒体文件
     * @return 结果
     */
    @Override
    public int updateTaskMedia(TaskMedia taskMedia) {
                taskMedia.setUpdateTime(DateUtils.getNowDate());
        return taskMediaMapper.updateTaskMedia(taskMedia);
    }

    /**
     * 批量删除任务媒体文件
     *
     * @param tmIds 需要删除的任务媒体文件主键
     * @return 结果
     */
    @Override
    public int deleteTaskMediaByTmIds(Long[] tmIds) {
        return taskMediaMapper.deleteTaskMediaByTmIds(tmIds);
    }

    /**
     * 删除任务媒体文件信息
     *
     * @param tmId 任务媒体文件主键
     * @return 结果
     */
    @Override
    public int deleteTaskMediaByTmId(Long tmId) {
        return taskMediaMapper.deleteTaskMediaByTmId(tmId);
    }

    @Override
    public int deleteMediaVideoByTaskId(Long[] taskIds) {
        if (taskIds == null || taskIds.length == 0) {
            // 如果 taskIds 为空，直接返回 0 或抛出异常
            return 0;
        }

        TaskMedia taskMedia = new TaskMedia();
        taskMedia.setTmFileType("video");
        taskMedia.setTaskIds(taskIds);
        List<TaskMedia> taskMediaList = taskMediaMapper.selectTaskMediaList(taskMedia);

        for(TaskMedia tm : taskMediaList){
            String filePath = tm.getTmFilePath();
            //清除filePath路径视频
            FileUtils.deleteFile(filePath);
        }
        return taskMediaMapper.deleteMediaVideoByTaskId(taskIds);
    }

}
